
/*
  Author:
  Lu Yiming <lu.yiming.lu@gmail.com>
*/

#include <stddef.h>
#include <stdlib.h>
#include "data.h"

void *buf = NULL;

int data_init()
{
	/* FIXME:  #ifdef BIT64  */
	unsigned long int i;   /* 64 bit */
	/* FIXME:  #else  */
	/* FIXME:     unsigned int i;  */  /* 32 bit */
	/* FIXME:  #endif */ /* BIT64 */

	buf = malloc(BUF_SIZE_MAX);
	if (!buf)
		return 1;  /* FIXME: error nomber */

#ifdef BIT64
	for (i=0; i< BUF_SIZE_MAX / 8; i++)
		*((unsigned long int *)buf + i) = 0x5555AAAA5555AAAA;
#else
	for (i=0; i< BUF_SIZE_MAX / 4; i++)
		*((unsigned int *)buf + i) = 0x5555AAAA;
#endif  /* BIT64 */

	return 0;
}

void *get_data()
{
	return buf;
}

int check_data(unsigned long int size)
{
	unsigned long int i;   /* 64 bit */

#ifdef BIT64
	for (i=0; i< size / 8; i++)
		if (0x5555AAAA5555AAAA != *((unsigned long int *)buf + i))
			return 1;
#else
	for (i=0; i< size / 4; i++)
		if (0x5555AAAA != *((unsigned int *)buf + i))
			return 1;
#endif  /* BIT64 */

	return 0;
}


/* 

   For beginner and my self remember

   [CH]
   data_init() 这个函数中，专门为 64 位设计了代码，主要是为了支持超过 4GB 尺寸的数据，以及增
   加效率，填充一段内存区域，64 位系统可能会比 32 位快一倍，尚未确认哦。。。

   附：请用 utf-8 编码写中文注释

 */
